package com.zyf.wjy.util;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * 编号生成器
 */
public class CodeGenerator {
    
    private static final AtomicInteger counter = new AtomicInteger(1);
    
    /**
     * 生成编号
     * @param prefix 前缀
     * @return 编号
     */
    public static String generate(String prefix) {
        String dateStr = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
        int count = counter.getAndIncrement();
        if (count > 9999) {
            counter.set(1);
            count = 1;
        }
        return String.format("%s%s%04d", prefix, dateStr, count);
    }
    
    /**
     * 生成种植计划编号
     */
    public static String generatePlanCode() {
        return generate("PLAN");
    }
    
    /**
     * 生成农事记录编号
     */
    public static String generateRecordCode() {
        return generate("REC");
    }
    
    /**
     * 生成监测编号
     */
    public static String generateMonitorCode() {
        return generate("MON");
    }
    
    /**
     * 生成产品编号
     */
    public static String generateProductCode() {
        return generate("PROD");
    }
    
    /**
     * 生成销售单号
     */
    public static String generateSalesCode() {
        return generate("SALE");
    }
}

